package com.ruoyi.wlxz.domain.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;

import java.util.Date;

/**
 * 学生活动学分补录数据传输对象
 * 用于封装学生参与活动后申请学分补录的相关信息
 * @author system
 */
public class StudentSupplement {

    /**
     * 学生学号
     * 唯一标识学生身份的编号
     */
    @Excel(name = "学号") // Excel导出时的列名
    private String studentNumber;

    /**
     * 学生姓名
     */
    @Excel(name = "姓名") // Excel导出时的列名
    private String studentName;

    /**
     * 活动开始时间
     */
    @JsonFormat(pattern = "yyyy/MM/dd") // JSON序列化日期格式
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy/M/d") // Excel导出配置：列名、宽度和日期格式
    private Date startTime;

    /**
     * 活动结束时间
     */
    @JsonFormat(pattern = "yyyy/MM/dd") // JSON序列化日期格式
    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy/M/d") // Excel导出配置：列名、宽度和日期格式
    private Date endTime;

    /**
     * 补录内容
     * 描述学生参与活动的具体情况
     */
    @Excel(name = "内容") // Excel导出时的列名
    private String content;

    /**
     * 活动一级分类
     * 活动的大类分类，如学术活动、文体活动等
     */
    @Excel(name = "活动一级分类") // Excel导出时的列名
    private String firstCategory;

    /**
     * 活动二级分类
     * 活动的子类分类，一级分类下的具体类别
     */
    @Excel(name = "活动二级分类") // Excel导出时的列名
    private String secondVategory;

    /**
     * 活动等级
     * 活动的级别，如校级、市级、省级、国家级等
     */
    @Excel(name = "活动等级") // Excel导出时的列名
    private String activityLevel;

    /**
     * 奖项内容
     * 学生在活动中获得的奖项
     */
    @Excel(name = "奖项内容") // Excel导出时的列名
    private String awardContent;

    /**
     * 学分类型
     * 补录学分的类别，如通识教育学分、专业选修课学分等
     */
    @Excel(name = "学分类型") // Excel导出时的列名
    private String creditType;

    /**
     * 发放分值
     * 补录的具体学分数值
     */
    @Excel(name = "发放学分值") // Excel导出时的列名
    private String creditValue;


    /**
     * 获取活动等级
     * @return 活动等级（如校级、市级、省级等）
     */
    public String getActivityLevel() {
        return activityLevel;
    }

    /**
     * 设置活动等级
     * @param activityLevel 活动等级（如校级、市级、省级等）
     */
    public void setActivityLevel(String activityLevel) {
        this.activityLevel = activityLevel;
    }

    /**
     * 获取奖项内容
     * @return 学生在活动中获得的奖项
     */
    public String getAwardContent() {
        return awardContent;
    }

    /**
     * 设置奖项内容
     * @param awardContent 学生在活动中获得的奖项
     */
    public void setAwardContent(String awardContent) {
        this.awardContent = awardContent;
    }

    /**
     * 获取补录内容
     * @return 学生参与活动的具体情况描述
     */
    public String getContent() {
        return content;
    }

    /**
     * 设置补录内容
     * @param content 学生参与活动的具体情况描述
     */
    public void setContent(String content) {
        this.content = content;
    }

    /**
     * 获取学分类型
     * @return 补录学分的类别（如通识教育学分、专业选修课学分等）
     */
    public String getCreditType() {
        return creditType;
    }

    /**
     * 设置学分类型
     * @param creditType 补录学分的类别（如通识教育学分、专业选修课学分等）
     */
    public void setCreditType(String creditType) {
        this.creditType = creditType;
    }

    /**
     * 获取发放分值
     * @return 补录的具体学分数值
     */
    public String getCreditValue() {
        return creditValue;
    }

    /**
     * 设置发放分值
     * @param creditValue 补录的具体学分数值
     */
    public void setCreditValue(String creditValue) {
        this.creditValue = creditValue;
    }

    /**
     * 获取活动结束时间
     * @return 活动结束日期
     */
    public Date getEndTime() {
        return endTime;
    }

    /**
     * 设置活动结束时间
     * @param endTime 活动结束日期
     */
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    /**
     * 获取活动一级分类
     * @return 活动的大类分类（如学术活动、文体活动等）
     */
    public String getFirstCategory() {
        return firstCategory;
    }

    /**
     * 设置活动一级分类
     * @param firstCategory 活动的大类分类（如学术活动、文体活动等）
     */
    public void setFirstCategory(String firstCategory) {
        this.firstCategory = firstCategory;
    }

    /**
     * 获取学生姓名
     * @return 学生的姓名
     */
    public String getName() {
        return studentName;
    }

    /**
     * 设置学生姓名
     * @param name 学生的姓名
     */
    public void setName(String name) {
        this.studentName = name;
    }

    /**
     * 获取活动二级分类
     * @return 活动的子类分类（一级分类下的具体类别）
     */
    public String getSecondVategory() {
        return secondVategory;
    }

    /**
     * 设置活动二级分类
     * @param secondVategory 活动的子类分类（一级分类下的具体类别）
     */
    public void setSecondVategory(String secondVategory) {
        this.secondVategory = secondVategory;
    }

    /**
     * 获取学生学号
     * @return 唯一标识学生身份的编号
     */
    public String getSnumber() {
        return studentNumber;
    }

    /**
     * 设置学生学号
     * @param snumber 唯一标识学生身份的编号
     */
    public void setSnumber(String snumber) {
        this.studentNumber = snumber;
    }

    /**
     * 获取活动开始时间
     * @return 活动开始日期
     */
    public Date getStartTime() {
        return startTime;
    }

    /**
     * 设置活动开始时间
     * @param startTime 活动开始日期
     */
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    /**
     * 全参数构造函数
     * @param activityLevel 活动等级
     * @param awardContent 奖项内容
     * @param content 补录内容
     * @param creditType 学分类型
     * @param creditValue 发放分值
     * @param endTime 结束时间
     * @param firstCategory 活动一级分类
     * @param name 学生姓名
     * @param secondVategory 活动二级分类
     * @param snumber 学生学号
     * @param startTime 开始时间
     */
    public StudentSupplement(String activityLevel, String awardContent, String content, String creditType, String creditValue, Date endTime, String firstCategory, String name, String secondVategory, String snumber, Date startTime) {
        this.activityLevel = activityLevel;
        this.awardContent = awardContent;
        this.content = content;
        this.creditType = creditType;
        this.creditValue = String.valueOf(creditValue);
        this.endTime = endTime;
        this.firstCategory = firstCategory;
        this.studentName = name;
        this.secondVategory = secondVategory;
        this.studentNumber = snumber;
        this.startTime = startTime;
    }

    /**
     * 无参构造函数
     */
    public StudentSupplement() {
    }

    /**
     * 重写toString方法
     * 用于对象的字符串表示，便于日志输出和调试
     * @return 对象的字符串表示
     */
    @Override
    public String toString() {
        return "StudentSupplement{" +
                "activityLevel='" + activityLevel + '\'' +
                ", name='" + studentName + '\'' +
                ", snumber='" + studentNumber + '\'' +
                ", startTime=" + startTime +
                ", endTime=" + endTime +
                ", content='" + content + '\'' +
                ", firstCategory='" + firstCategory + '\'' +
                ", secondVategory='" + secondVategory + '\'' +
                ", awardContent='" + awardContent + '\'' +
                ", creditType='" + creditType + '\'' +
                ", creditValue=" + creditValue +
                '}';
    }
}